前一篇最後增加了讓客戶確認的訊息,然後再客戶確認後也會回傳相關的預約資料。
那接下來就是要把回傳的預約資料,儲存到SQL資料庫中這樣才可以,不然客戶操作了老半天,我們商家沒有資料,就有可能讓客戶撲空之類的問題發生。
首先在models資料夾下建立一個python的檔案,並命名為Reservation。
建立完成後,匯入 db與datetime的模組。
程式碼:
from extensions import db
import datetime
定義一個class為Reservation是繼承db的模組,然後設定tablename為【reservation】(資料夾名稱),
資料欄位分別為:
id, 整數, 主鍵
user_id, 整數 ,外來鍵(對應到的是先前建立了user資料表中的id)
booking_service_itemid, String字數50, 不可為空
booking_service, String字數150, 不可為空
booking_datetime, 日期, 不可為空
is_canceled, 布林直. 預設0
created_on, 時間, 預設資料被建立時間
update_on, 時間, 紀錄最後被修改的時間(預設資料被建立時間)
程式碼:
class Reservation(db.Model):
__tablename__ = 'reservation'
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
booking_service_itemid = db.Column(db.String(50), nullable=False)
booking_service = db.Column(db.String(150), nullable=False)
booking_datetime = db.Column(db.DateTime, nullable=False)
is_canceled = db.Column(db.Boolean(), server_default='0')
created_on = db.Column(db.DateTime, default=datetime.datetime.now())
updated_on = db.Column(db.DateTime, default=datetime.datetime.now(), onupdate=datetime.datetime.now())
再來定義初始化函數__init__,讓物件本身建立時能能帶入資料,包含user_id、booking_service_itemid、booking_service、booking_datetime
程式碼:
def __init__(self, user_id, booking_service_itemid, booking_service, booking_datetime):
self.user_id = user_id
self.booking_service_itemid = booking_service_itemid
self.booking_service = booking_service
self.booking_datetime = booking_datetime
再來到user.py中,user模組中需要添加reservation關聯到Reservation預約的class,設定backref為user
屬性建立好,之後資料相互就可以查詢,如用用戶資料即可查到用戶預約了哪些。或者查詢預約即可看到,哪些用戶預約了。
程式碼:
reservation = db.relationship('Reservation', backref='user')
再來到service.py中匯入extensions的db,models資料夾中的user 與 Reservation 匯入 User 與 Reservation 模組
程式碼:
from extensions import db
from models.user import User
from models.Reservation import Reservation
到Terminal輸入flask db migrate,然後會在migrations資料夾中的versions資料夾中新增一個版本
然後再輸入flask db upgrade更新資料夾
更新完成就可以在pgAdmin查看是否建立成功
下一篇,持續製作